{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<script>requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min']},});if(!window.Plotly) {{require(['plotly'],function(plotly) {window.Plotly=plotly;});}}</script>"
      ],
      "text/vnd.plotly.v1+html": [
       "<script>requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min']},});if(!window.Plotly) {{require(['plotly'],function(plotly) {window.Plotly=plotly;});}}</script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Python version: 3.6.3 |Anaconda custom (64-bit)| (default, Oct 15 2017, 03:27:45) [MSC v.1900 64 bit (AMD64)]\n",
      "pandas version: 0.20.3\n",
      "NumPy version: 1.14.3\n",
      "SciPy version: 1.1.0\n",
      "scikit-learn version: 0.19.1\n",
      "matplotlib version: 2.1.0\n",
      "IPython version: 6.1.0\n",
      "Using Hard-Coded Configuration for data_file_path\n",
      "data_file_path:  C:/Development/kaggle--home-credit-default-risk/data/\n",
      "data_file_name:  application_train.csv\n",
      "\n",
      " df_row_count:  307511 \n",
      " df_column_count:  122 \n",
      "\n",
      "\n",
      " df_values_count_total:  37516342 \n",
      "\n",
      "\n",
      " df_column_names:  \n",
      " ['SK_ID_CURR', 'TARGET', 'NAME_CONTRACT_TYPE', 'CODE_GENDER', 'FLAG_OWN_CAR', 'FLAG_OWN_REALTY', 'CNT_CHILDREN', 'AMT_INCOME_TOTAL', 'AMT_CREDIT', 'AMT_ANNUITY', 'AMT_GOODS_PRICE', 'NAME_TYPE_SUITE', 'NAME_INCOME_TYPE', 'NAME_EDUCATION_TYPE', 'NAME_FAMILY_STATUS', 'NAME_HOUSING_TYPE', 'REGION_POPULATION_RELATIVE', 'DAYS_BIRTH', 'DAYS_EMPLOYED', 'DAYS_REGISTRATION', 'DAYS_ID_PUBLISH', 'OWN_CAR_AGE', 'FLAG_MOBIL', 'FLAG_EMP_PHONE', 'FLAG_WORK_PHONE', 'FLAG_CONT_MOBILE', 'FLAG_PHONE', 'FLAG_EMAIL', 'OCCUPATION_TYPE', 'CNT_FAM_MEMBERS', 'REGION_RATING_CLIENT', 'REGION_RATING_CLIENT_W_CITY', 'WEEKDAY_APPR_PROCESS_START', 'HOUR_APPR_PROCESS_START', 'REG_REGION_NOT_LIVE_REGION', 'REG_REGION_NOT_WORK_REGION', 'LIVE_REGION_NOT_WORK_REGION', 'REG_CITY_NOT_LIVE_CITY', 'REG_CITY_NOT_WORK_CITY', 'LIVE_CITY_NOT_WORK_CITY', 'ORGANIZATION_TYPE', 'EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3', 'APARTMENTS_AVG', 'BASEMENTAREA_AVG', 'YEARS_BEGINEXPLUATATION_AVG', 'YEARS_BUILD_AVG', 'COMMONAREA_AVG', 'ELEVATORS_AVG', 'ENTRANCES_AVG', 'FLOORSMAX_AVG', 'FLOORSMIN_AVG', 'LANDAREA_AVG', 'LIVINGAPARTMENTS_AVG', 'LIVINGAREA_AVG', 'NONLIVINGAPARTMENTS_AVG', 'NONLIVINGAREA_AVG', 'APARTMENTS_MODE', 'BASEMENTAREA_MODE', 'YEARS_BEGINEXPLUATATION_MODE', 'YEARS_BUILD_MODE', 'COMMONAREA_MODE', 'ELEVATORS_MODE', 'ENTRANCES_MODE', 'FLOORSMAX_MODE', 'FLOORSMIN_MODE', 'LANDAREA_MODE', 'LIVINGAPARTMENTS_MODE', 'LIVINGAREA_MODE', 'NONLIVINGAPARTMENTS_MODE', 'NONLIVINGAREA_MODE', 'APARTMENTS_MEDI', 'BASEMENTAREA_MEDI', 'YEARS_BEGINEXPLUATATION_MEDI', 'YEARS_BUILD_MEDI', 'COMMONAREA_MEDI', 'ELEVATORS_MEDI', 'ENTRANCES_MEDI', 'FLOORSMAX_MEDI', 'FLOORSMIN_MEDI', 'LANDAREA_MEDI', 'LIVINGAPARTMENTS_MEDI', 'LIVINGAREA_MEDI', 'NONLIVINGAPARTMENTS_MEDI', 'NONLIVINGAREA_MEDI', 'FONDKAPREMONT_MODE', 'HOUSETYPE_MODE', 'TOTALAREA_MODE', 'WALLSMATERIAL_MODE', 'EMERGENCYSTATE_MODE', 'OBS_30_CNT_SOCIAL_CIRCLE', 'DEF_30_CNT_SOCIAL_CIRCLE', 'OBS_60_CNT_SOCIAL_CIRCLE', 'DEF_60_CNT_SOCIAL_CIRCLE', 'DAYS_LAST_PHONE_CHANGE', 'FLAG_DOCUMENT_2', 'FLAG_DOCUMENT_3', 'FLAG_DOCUMENT_4', 'FLAG_DOCUMENT_5', 'FLAG_DOCUMENT_6', 'FLAG_DOCUMENT_7', 'FLAG_DOCUMENT_8', 'FLAG_DOCUMENT_9', 'FLAG_DOCUMENT_10', 'FLAG_DOCUMENT_11', 'FLAG_DOCUMENT_12', 'FLAG_DOCUMENT_13', 'FLAG_DOCUMENT_14', 'FLAG_DOCUMENT_15', 'FLAG_DOCUMENT_16', 'FLAG_DOCUMENT_17', 'FLAG_DOCUMENT_18', 'FLAG_DOCUMENT_19', 'FLAG_DOCUMENT_20', 'FLAG_DOCUMENT_21', 'AMT_REQ_CREDIT_BUREAU_HOUR', 'AMT_REQ_CREDIT_BUREAU_DAY', 'AMT_REQ_CREDIT_BUREAU_WEEK', 'AMT_REQ_CREDIT_BUREAU_MON', 'AMT_REQ_CREDIT_BUREAU_QRT', 'AMT_REQ_CREDIT_BUREAU_YEAR'] \n",
      "\n",
      "\n",
      " df_column_dtypes:  \n",
      " SK_ID_CURR                      int64\n",
      "TARGET                          int64\n",
      "NAME_CONTRACT_TYPE             object\n",
      "CODE_GENDER                    object\n",
      "FLAG_OWN_CAR                   object\n",
      "FLAG_OWN_REALTY                object\n",
      "CNT_CHILDREN                    int64\n",
      "AMT_INCOME_TOTAL              float64\n",
      "AMT_CREDIT                    float64\n",
      "AMT_ANNUITY                   float64\n",
      "AMT_GOODS_PRICE               float64\n",
      "NAME_TYPE_SUITE                object\n",
      "NAME_INCOME_TYPE               object\n",
      "NAME_EDUCATION_TYPE            object\n",
      "NAME_FAMILY_STATUS             object\n",
      "NAME_HOUSING_TYPE              object\n",
      "REGION_POPULATION_RELATIVE    float64\n",
      "DAYS_BIRTH                      int64\n",
      "DAYS_EMPLOYED                   int64\n",
      "DAYS_REGISTRATION             float64\n",
      "DAYS_ID_PUBLISH                 int64\n",
      "OWN_CAR_AGE                   float64\n",
      "FLAG_MOBIL                      int64\n",
      "FLAG_EMP_PHONE                  int64\n",
      "FLAG_WORK_PHONE                 int64\n",
      "FLAG_CONT_MOBILE                int64\n",
      "FLAG_PHONE                      int64\n",
      "FLAG_EMAIL                      int64\n",
      "OCCUPATION_TYPE                object\n",
      "CNT_FAM_MEMBERS               float64\n",
      "                               ...   \n",
      "DEF_30_CNT_SOCIAL_CIRCLE      float64\n",
      "OBS_60_CNT_SOCIAL_CIRCLE      float64\n",
      "DEF_60_CNT_SOCIAL_CIRCLE      float64\n",
      "DAYS_LAST_PHONE_CHANGE        float64\n",
      "FLAG_DOCUMENT_2                 int64\n",
      "FLAG_DOCUMENT_3                 int64\n",
      "FLAG_DOCUMENT_4                 int64\n",
      "FLAG_DOCUMENT_5                 int64\n",
      "FLAG_DOCUMENT_6                 int64\n",
      "FLAG_DOCUMENT_7                 int64\n",
      "FLAG_DOCUMENT_8                 int64\n",
      "FLAG_DOCUMENT_9                 int64\n",
      "FLAG_DOCUMENT_10                int64\n",
      "FLAG_DOCUMENT_11                int64\n",
      "FLAG_DOCUMENT_12                int64\n",
      "FLAG_DOCUMENT_13                int64\n",
      "FLAG_DOCUMENT_14                int64\n",
      "FLAG_DOCUMENT_15                int64\n",
      "FLAG_DOCUMENT_16                int64\n",
      "FLAG_DOCUMENT_17                int64\n",
      "FLAG_DOCUMENT_18                int64\n",
      "FLAG_DOCUMENT_19                int64\n",
      "FLAG_DOCUMENT_20                int64\n",
      "FLAG_DOCUMENT_21                int64\n",
      "AMT_REQ_CREDIT_BUREAU_HOUR    float64\n",
      "AMT_REQ_CREDIT_BUREAU_DAY     float64\n",
      "AMT_REQ_CREDIT_BUREAU_WEEK    float64\n",
      "AMT_REQ_CREDIT_BUREAU_MON     float64\n",
      "AMT_REQ_CREDIT_BUREAU_QRT     float64\n",
      "AMT_REQ_CREDIT_BUREAU_YEAR    float64\n",
      "Length: 122, dtype: object \n",
      "\n",
      "\n",
      " df_column_dtype_groups:  \n",
      " {dtype('int64'): Index(['SK_ID_CURR', 'TARGET', 'CNT_CHILDREN', 'DAYS_BIRTH', 'DAYS_EMPLOYED',\n",
      "       'DAYS_ID_PUBLISH', 'FLAG_MOBIL', 'FLAG_EMP_PHONE', 'FLAG_WORK_PHONE',\n",
      "       'FLAG_CONT_MOBILE', 'FLAG_PHONE', 'FLAG_EMAIL', 'REGION_RATING_CLIENT',\n",
      "       'REGION_RATING_CLIENT_W_CITY', 'HOUR_APPR_PROCESS_START',\n",
      "       'REG_REGION_NOT_LIVE_REGION', 'REG_REGION_NOT_WORK_REGION',\n",
      "       'LIVE_REGION_NOT_WORK_REGION', 'REG_CITY_NOT_LIVE_CITY',\n",
      "       'REG_CITY_NOT_WORK_CITY', 'LIVE_CITY_NOT_WORK_CITY', 'FLAG_DOCUMENT_2',\n",
      "       'FLAG_DOCUMENT_3', 'FLAG_DOCUMENT_4', 'FLAG_DOCUMENT_5',\n",
      "       'FLAG_DOCUMENT_6', 'FLAG_DOCUMENT_7', 'FLAG_DOCUMENT_8',\n",
      "       'FLAG_DOCUMENT_9', 'FLAG_DOCUMENT_10', 'FLAG_DOCUMENT_11',\n",
      "       'FLAG_DOCUMENT_12', 'FLAG_DOCUMENT_13', 'FLAG_DOCUMENT_14',\n",
      "       'FLAG_DOCUMENT_15', 'FLAG_DOCUMENT_16', 'FLAG_DOCUMENT_17',\n",
      "       'FLAG_DOCUMENT_18', 'FLAG_DOCUMENT_19', 'FLAG_DOCUMENT_20',\n",
      "       'FLAG_DOCUMENT_21'],\n",
      "      dtype='object'), dtype('float64'): Index(['AMT_INCOME_TOTAL', 'AMT_CREDIT', 'AMT_ANNUITY', 'AMT_GOODS_PRICE',\n",
      "       'REGION_POPULATION_RELATIVE', 'DAYS_REGISTRATION', 'OWN_CAR_AGE',\n",
      "       'CNT_FAM_MEMBERS', 'EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3',\n",
      "       'APARTMENTS_AVG', 'BASEMENTAREA_AVG', 'YEARS_BEGINEXPLUATATION_AVG',\n",
      "       'YEARS_BUILD_AVG', 'COMMONAREA_AVG', 'ELEVATORS_AVG', 'ENTRANCES_AVG',\n",
      "       'FLOORSMAX_AVG', 'FLOORSMIN_AVG', 'LANDAREA_AVG',\n",
      "       'LIVINGAPARTMENTS_AVG', 'LIVINGAREA_AVG', 'NONLIVINGAPARTMENTS_AVG',\n",
      "       'NONLIVINGAREA_AVG', 'APARTMENTS_MODE', 'BASEMENTAREA_MODE',\n",
      "       'YEARS_BEGINEXPLUATATION_MODE', 'YEARS_BUILD_MODE', 'COMMONAREA_MODE',\n",
      "       'ELEVATORS_MODE', 'ENTRANCES_MODE', 'FLOORSMAX_MODE', 'FLOORSMIN_MODE',\n",
      "       'LANDAREA_MODE', 'LIVINGAPARTMENTS_MODE', 'LIVINGAREA_MODE',\n",
      "       'NONLIVINGAPARTMENTS_MODE', 'NONLIVINGAREA_MODE', 'APARTMENTS_MEDI',\n",
      "       'BASEMENTAREA_MEDI', 'YEARS_BEGINEXPLUATATION_MEDI', 'YEARS_BUILD_MEDI',\n",
      "       'COMMONAREA_MEDI', 'ELEVATORS_MEDI', 'ENTRANCES_MEDI', 'FLOORSMAX_MEDI',\n",
      "       'FLOORSMIN_MEDI', 'LANDAREA_MEDI', 'LIVINGAPARTMENTS_MEDI',\n",
      "       'LIVINGAREA_MEDI', 'NONLIVINGAPARTMENTS_MEDI', 'NONLIVINGAREA_MEDI',\n",
      "       'TOTALAREA_MODE', 'OBS_30_CNT_SOCIAL_CIRCLE',\n",
      "       'DEF_30_CNT_SOCIAL_CIRCLE', 'OBS_60_CNT_SOCIAL_CIRCLE',\n",
      "       'DEF_60_CNT_SOCIAL_CIRCLE', 'DAYS_LAST_PHONE_CHANGE',\n",
      "       'AMT_REQ_CREDIT_BUREAU_HOUR', 'AMT_REQ_CREDIT_BUREAU_DAY',\n",
      "       'AMT_REQ_CREDIT_BUREAU_WEEK', 'AMT_REQ_CREDIT_BUREAU_MON',\n",
      "       'AMT_REQ_CREDIT_BUREAU_QRT', 'AMT_REQ_CREDIT_BUREAU_YEAR'],\n",
      "      dtype='object'), dtype('O'): Index(['NAME_CONTRACT_TYPE', 'CODE_GENDER', 'FLAG_OWN_CAR', 'FLAG_OWN_REALTY',\n",
      "       'NAME_TYPE_SUITE', 'NAME_INCOME_TYPE', 'NAME_EDUCATION_TYPE',\n",
      "       'NAME_FAMILY_STATUS', 'NAME_HOUSING_TYPE', 'OCCUPATION_TYPE',\n",
      "       'WEEKDAY_APPR_PROCESS_START', 'ORGANIZATION_TYPE', 'FONDKAPREMONT_MODE',\n",
      "       'HOUSETYPE_MODE', 'WALLSMATERIAL_MODE', 'EMERGENCYSTATE_MODE'],\n",
      "      dtype='object')} \n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      " df_missing_values_flag:  True \n",
      "\n",
      "\n",
      " df_missing_values_count_total:  9152465 \n",
      "\n",
      "\n",
      " df_missing_values_percentage_total:  0.24395941907129431 \n",
      "\n",
      "\n",
      " df_columns_row_count:  \n",
      " {'SK_ID_CURR': 307511, 'TARGET': 307511, 'NAME_CONTRACT_TYPE': 307511, 'CODE_GENDER': 307511, 'FLAG_OWN_CAR': 307511, 'FLAG_OWN_REALTY': 307511, 'CNT_CHILDREN': 307511, 'AMT_INCOME_TOTAL': 307511, 'AMT_CREDIT': 307511, 'AMT_ANNUITY': 307511, 'AMT_GOODS_PRICE': 307511, 'NAME_TYPE_SUITE': 307511, 'NAME_INCOME_TYPE': 307511, 'NAME_EDUCATION_TYPE': 307511, 'NAME_FAMILY_STATUS': 307511, 'NAME_HOUSING_TYPE': 307511, 'REGION_POPULATION_RELATIVE': 307511, 'DAYS_BIRTH': 307511, 'DAYS_EMPLOYED': 307511, 'DAYS_REGISTRATION': 307511, 'DAYS_ID_PUBLISH': 307511, 'OWN_CAR_AGE': 307511, 'FLAG_MOBIL': 307511, 'FLAG_EMP_PHONE': 307511, 'FLAG_WORK_PHONE': 307511, 'FLAG_CONT_MOBILE': 307511, 'FLAG_PHONE': 307511, 'FLAG_EMAIL': 307511, 'OCCUPATION_TYPE': 307511, 'CNT_FAM_MEMBERS': 307511, 'REGION_RATING_CLIENT': 307511, 'REGION_RATING_CLIENT_W_CITY': 307511, 'WEEKDAY_APPR_PROCESS_START': 307511, 'HOUR_APPR_PROCESS_START': 307511, 'REG_REGION_NOT_LIVE_REGION': 307511, 'REG_REGION_NOT_WORK_REGION': 307511, 'LIVE_REGION_NOT_WORK_REGION': 307511, 'REG_CITY_NOT_LIVE_CITY': 307511, 'REG_CITY_NOT_WORK_CITY': 307511, 'LIVE_CITY_NOT_WORK_CITY': 307511, 'ORGANIZATION_TYPE': 307511, 'EXT_SOURCE_1': 307511, 'EXT_SOURCE_2': 307511, 'EXT_SOURCE_3': 307511, 'APARTMENTS_AVG': 307511, 'BASEMENTAREA_AVG': 307511, 'YEARS_BEGINEXPLUATATION_AVG': 307511, 'YEARS_BUILD_AVG': 307511, 'COMMONAREA_AVG': 307511, 'ELEVATORS_AVG': 307511, 'ENTRANCES_AVG': 307511, 'FLOORSMAX_AVG': 307511, 'FLOORSMIN_AVG': 307511, 'LANDAREA_AVG': 307511, 'LIVINGAPARTMENTS_AVG': 307511, 'LIVINGAREA_AVG': 307511, 'NONLIVINGAPARTMENTS_AVG': 307511, 'NONLIVINGAREA_AVG': 307511, 'APARTMENTS_MODE': 307511, 'BASEMENTAREA_MODE': 307511, 'YEARS_BEGINEXPLUATATION_MODE': 307511, 'YEARS_BUILD_MODE': 307511, 'COMMONAREA_MODE': 307511, 'ELEVATORS_MODE': 307511, 'ENTRANCES_MODE': 307511, 'FLOORSMAX_MODE': 307511, 'FLOORSMIN_MODE': 307511, 'LANDAREA_MODE': 307511, 'LIVINGAPARTMENTS_MODE': 307511, 'LIVINGAREA_MODE': 307511, 'NONLIVINGAPARTMENTS_MODE': 307511, 'NONLIVINGAREA_MODE': 307511, 'APARTMENTS_MEDI': 307511, 'BASEMENTAREA_MEDI': 307511, 'YEARS_BEGINEXPLUATATION_MEDI': 307511, 'YEARS_BUILD_MEDI': 307511, 'COMMONAREA_MEDI': 307511, 'ELEVATORS_MEDI': 307511, 'ENTRANCES_MEDI': 307511, 'FLOORSMAX_MEDI': 307511, 'FLOORSMIN_MEDI': 307511, 'LANDAREA_MEDI': 307511, 'LIVINGAPARTMENTS_MEDI': 307511, 'LIVINGAREA_MEDI': 307511, 'NONLIVINGAPARTMENTS_MEDI': 307511, 'NONLIVINGAREA_MEDI': 307511, 'FONDKAPREMONT_MODE': 307511, 'HOUSETYPE_MODE': 307511, 'TOTALAREA_MODE': 307511, 'WALLSMATERIAL_MODE': 307511, 'EMERGENCYSTATE_MODE': 307511, 'OBS_30_CNT_SOCIAL_CIRCLE': 307511, 'DEF_30_CNT_SOCIAL_CIRCLE': 307511, 'OBS_60_CNT_SOCIAL_CIRCLE': 307511, 'DEF_60_CNT_SOCIAL_CIRCLE': 307511, 'DAYS_LAST_PHONE_CHANGE': 307511, 'FLAG_DOCUMENT_2': 307511, 'FLAG_DOCUMENT_3': 307511, 'FLAG_DOCUMENT_4': 307511, 'FLAG_DOCUMENT_5': 307511, 'FLAG_DOCUMENT_6': 307511, 'FLAG_DOCUMENT_7': 307511, 'FLAG_DOCUMENT_8': 307511, 'FLAG_DOCUMENT_9': 307511, 'FLAG_DOCUMENT_10': 307511, 'FLAG_DOCUMENT_11': 307511, 'FLAG_DOCUMENT_12': 307511, 'FLAG_DOCUMENT_13': 307511, 'FLAG_DOCUMENT_14': 307511, 'FLAG_DOCUMENT_15': 307511, 'FLAG_DOCUMENT_16': 307511, 'FLAG_DOCUMENT_17': 307511, 'FLAG_DOCUMENT_18': 307511, 'FLAG_DOCUMENT_19': 307511, 'FLAG_DOCUMENT_20': 307511, 'FLAG_DOCUMENT_21': 307511, 'AMT_REQ_CREDIT_BUREAU_HOUR': 307511, 'AMT_REQ_CREDIT_BUREAU_DAY': 307511, 'AMT_REQ_CREDIT_BUREAU_WEEK': 307511, 'AMT_REQ_CREDIT_BUREAU_MON': 307511, 'AMT_REQ_CREDIT_BUREAU_QRT': 307511, 'AMT_REQ_CREDIT_BUREAU_YEAR': 307511} \n",
      "\n",
      "\n",
      " df_columns_number_of_unique_values:  \n",
      " {'SK_ID_CURR': 307511, 'TARGET': 2, 'NAME_CONTRACT_TYPE': 2, 'CODE_GENDER': 3, 'FLAG_OWN_CAR': 2, 'FLAG_OWN_REALTY': 2, 'CNT_CHILDREN': 15, 'AMT_INCOME_TOTAL': 2548, 'AMT_CREDIT': 5603, 'AMT_ANNUITY': 13672, 'AMT_GOODS_PRICE': 1002, 'NAME_TYPE_SUITE': 7, 'NAME_INCOME_TYPE': 8, 'NAME_EDUCATION_TYPE': 5, 'NAME_FAMILY_STATUS': 6, 'NAME_HOUSING_TYPE': 6, 'REGION_POPULATION_RELATIVE': 81, 'DAYS_BIRTH': 17460, 'DAYS_EMPLOYED': 12574, 'DAYS_REGISTRATION': 15688, 'DAYS_ID_PUBLISH': 6168, 'OWN_CAR_AGE': 62, 'FLAG_MOBIL': 2, 'FLAG_EMP_PHONE': 2, 'FLAG_WORK_PHONE': 2, 'FLAG_CONT_MOBILE': 2, 'FLAG_PHONE': 2, 'FLAG_EMAIL': 2, 'OCCUPATION_TYPE': 18, 'CNT_FAM_MEMBERS': 17, 'REGION_RATING_CLIENT': 3, 'REGION_RATING_CLIENT_W_CITY': 3, 'WEEKDAY_APPR_PROCESS_START': 7, 'HOUR_APPR_PROCESS_START': 24, 'REG_REGION_NOT_LIVE_REGION': 2, 'REG_REGION_NOT_WORK_REGION': 2, 'LIVE_REGION_NOT_WORK_REGION': 2, 'REG_CITY_NOT_LIVE_CITY': 2, 'REG_CITY_NOT_WORK_CITY': 2, 'LIVE_CITY_NOT_WORK_CITY': 2, 'ORGANIZATION_TYPE': 58, 'EXT_SOURCE_1': 114584, 'EXT_SOURCE_2': 119831, 'EXT_SOURCE_3': 814, 'APARTMENTS_AVG': 2339, 'BASEMENTAREA_AVG': 3780, 'YEARS_BEGINEXPLUATATION_AVG': 285, 'YEARS_BUILD_AVG': 149, 'COMMONAREA_AVG': 3181, 'ELEVATORS_AVG': 257, 'ENTRANCES_AVG': 285, 'FLOORSMAX_AVG': 403, 'FLOORSMIN_AVG': 305, 'LANDAREA_AVG': 3527, 'LIVINGAPARTMENTS_AVG': 1868, 'LIVINGAREA_AVG': 5199, 'NONLIVINGAPARTMENTS_AVG': 386, 'NONLIVINGAREA_AVG': 3290, 'APARTMENTS_MODE': 760, 'BASEMENTAREA_MODE': 3841, 'YEARS_BEGINEXPLUATATION_MODE': 221, 'YEARS_BUILD_MODE': 154, 'COMMONAREA_MODE': 3128, 'ELEVATORS_MODE': 26, 'ENTRANCES_MODE': 30, 'FLOORSMAX_MODE': 25, 'FLOORSMIN_MODE': 25, 'LANDAREA_MODE': 3563, 'LIVINGAPARTMENTS_MODE': 736, 'LIVINGAREA_MODE': 5301, 'NONLIVINGAPARTMENTS_MODE': 167, 'NONLIVINGAREA_MODE': 3327, 'APARTMENTS_MEDI': 1148, 'BASEMENTAREA_MEDI': 3772, 'YEARS_BEGINEXPLUATATION_MEDI': 245, 'YEARS_BUILD_MEDI': 151, 'COMMONAREA_MEDI': 3202, 'ELEVATORS_MEDI': 46, 'ENTRANCES_MEDI': 46, 'FLOORSMAX_MEDI': 49, 'FLOORSMIN_MEDI': 47, 'LANDAREA_MEDI': 3560, 'LIVINGAPARTMENTS_MEDI': 1097, 'LIVINGAREA_MEDI': 5281, 'NONLIVINGAPARTMENTS_MEDI': 214, 'NONLIVINGAREA_MEDI': 3323, 'FONDKAPREMONT_MODE': 4, 'HOUSETYPE_MODE': 3, 'TOTALAREA_MODE': 5116, 'WALLSMATERIAL_MODE': 7, 'EMERGENCYSTATE_MODE': 2, 'OBS_30_CNT_SOCIAL_CIRCLE': 33, 'DEF_30_CNT_SOCIAL_CIRCLE': 10, 'OBS_60_CNT_SOCIAL_CIRCLE': 33, 'DEF_60_CNT_SOCIAL_CIRCLE': 9, 'DAYS_LAST_PHONE_CHANGE': 3773, 'FLAG_DOCUMENT_2': 2, 'FLAG_DOCUMENT_3': 2, 'FLAG_DOCUMENT_4': 2, 'FLAG_DOCUMENT_5': 2, 'FLAG_DOCUMENT_6': 2, 'FLAG_DOCUMENT_7': 2, 'FLAG_DOCUMENT_8': 2, 'FLAG_DOCUMENT_9': 2, 'FLAG_DOCUMENT_10': 2, 'FLAG_DOCUMENT_11': 2, 'FLAG_DOCUMENT_12': 2, 'FLAG_DOCUMENT_13': 2, 'FLAG_DOCUMENT_14': 2, 'FLAG_DOCUMENT_15': 2, 'FLAG_DOCUMENT_16': 2, 'FLAG_DOCUMENT_17': 2, 'FLAG_DOCUMENT_18': 2, 'FLAG_DOCUMENT_19': 2, 'FLAG_DOCUMENT_20': 2, 'FLAG_DOCUMENT_21': 2, 'AMT_REQ_CREDIT_BUREAU_HOUR': 5, 'AMT_REQ_CREDIT_BUREAU_DAY': 9, 'AMT_REQ_CREDIT_BUREAU_WEEK': 9, 'AMT_REQ_CREDIT_BUREAU_MON': 24, 'AMT_REQ_CREDIT_BUREAU_QRT': 11, 'AMT_REQ_CREDIT_BUREAU_YEAR': 25} \n",
      "\n",
      "\n",
      " df_columns_percentage_of_unique_values:  \n",
      " {'SK_ID_CURR': 1.0, 'TARGET': 6.503832383231819e-06, 'NAME_CONTRACT_TYPE': 6.503832383231819e-06, 'CODE_GENDER': 9.755748574847729e-06, 'FLAG_OWN_CAR': 6.503832383231819e-06, 'FLAG_OWN_REALTY': 6.503832383231819e-06, 'CNT_CHILDREN': 4.8778742874238645e-05, 'AMT_INCOME_TOTAL': 0.008285882456237337, 'AMT_CREDIT': 0.01822048642162394, 'AMT_ANNUITY': 0.04446019817177272, 'AMT_GOODS_PRICE': 0.0032584200239991414, 'NAME_TYPE_SUITE': 2.276341334131137e-05, 'NAME_INCOME_TYPE': 2.6015329532927276e-05, 'NAME_EDUCATION_TYPE': 1.6259580958079547e-05, 'NAME_FAMILY_STATUS': 1.9511497149695458e-05, 'NAME_HOUSING_TYPE': 1.9511497149695458e-05, 'REGION_POPULATION_RELATIVE': 0.00026340521152088867, 'DAYS_BIRTH': 0.05677845670561378, 'DAYS_EMPLOYED': 0.040889594193378447, 'DAYS_REGISTRATION': 0.05101606121407039, 'DAYS_ID_PUBLISH': 0.02005781906988693, 'OWN_CAR_AGE': 0.0002016188038801864, 'FLAG_MOBIL': 6.503832383231819e-06, 'FLAG_EMP_PHONE': 6.503832383231819e-06, 'FLAG_WORK_PHONE': 6.503832383231819e-06, 'FLAG_CONT_MOBILE': 6.503832383231819e-06, 'FLAG_PHONE': 6.503832383231819e-06, 'FLAG_EMAIL': 6.503832383231819e-06, 'OCCUPATION_TYPE': 5.8534491449086374e-05, 'CNT_FAM_MEMBERS': 5.528257525747047e-05, 'REGION_RATING_CLIENT': 9.755748574847729e-06, 'REGION_RATING_CLIENT_W_CITY': 9.755748574847729e-06, 'WEEKDAY_APPR_PROCESS_START': 2.276341334131137e-05, 'HOUR_APPR_PROCESS_START': 7.804598859878183e-05, 'REG_REGION_NOT_LIVE_REGION': 6.503832383231819e-06, 'REG_REGION_NOT_WORK_REGION': 6.503832383231819e-06, 'LIVE_REGION_NOT_WORK_REGION': 6.503832383231819e-06, 'REG_CITY_NOT_LIVE_CITY': 6.503832383231819e-06, 'REG_CITY_NOT_WORK_CITY': 6.503832383231819e-06, 'LIVE_CITY_NOT_WORK_CITY': 6.503832383231819e-06, 'ORGANIZATION_TYPE': 0.00018861113911372275, 'EXT_SOURCE_1': 0.3726175649001174, 'EXT_SOURCE_2': 0.3896803691575261, 'EXT_SOURCE_3': 0.0026470597799753506, 'APARTMENTS_AVG': 0.007606231972189612, 'BASEMENTAREA_AVG': 0.01229224320430814, 'YEARS_BEGINEXPLUATATION_AVG': 0.0009267961146105343, 'YEARS_BUILD_AVG': 0.00048453551255077057, 'COMMONAREA_AVG': 0.010344345405530208, 'ELEVATORS_AVG': 0.0008357424612452888, 'ENTRANCES_AVG': 0.0009267961146105343, 'FLOORSMAX_AVG': 0.0013105222252212116, 'FLOORSMIN_AVG': 0.0009918344384428524, 'LANDAREA_AVG': 0.011469508407829314, 'LIVINGAPARTMENTS_AVG': 0.006074579445938519, 'LIVINGAREA_AVG': 0.016906712280211116, 'NONLIVINGAPARTMENTS_AVG': 0.001255239649963741, 'NONLIVINGAREA_AVG': 0.010698804270416343, 'APARTMENTS_MODE': 0.0024714563056280913, 'BASEMENTAREA_MODE': 0.01249061009199671, 'YEARS_BEGINEXPLUATATION_MODE': 0.000718673478347116, 'YEARS_BUILD_MODE': 0.0005007950935088501, 'COMMONAREA_MODE': 0.010171993847374565, 'ELEVATORS_MODE': 8.454982098201365e-05, 'ENTRANCES_MODE': 9.755748574847729e-05, 'FLOORSMAX_MODE': 8.129790479039775e-05, 'FLOORSMIN_MODE': 8.129790479039775e-05, 'LANDAREA_MODE': 0.011586577390727486, 'LIVINGAPARTMENTS_MODE': 0.0023934103170293094, 'LIVINGAREA_MODE': 0.017238407731755938, 'NONLIVINGAPARTMENTS_MODE': 0.000543070003999857, 'NONLIVINGAREA_MODE': 0.010819125169506132, 'APARTMENTS_MEDI': 0.0037331997879750645, 'BASEMENTAREA_MEDI': 0.012266227874775212, 'YEARS_BEGINEXPLUATATION_MEDI': 0.0007967194669458978, 'YEARS_BUILD_MEDI': 0.0004910393449340023, 'COMMONAREA_MEDI': 0.010412635645554143, 'ELEVATORS_MEDI': 0.00014958814481433184, 'ENTRANCES_MEDI': 0.00014958814481433184, 'FLOORSMAX_MEDI': 0.00015934389338917958, 'FLOORSMIN_MEDI': 0.00015284006100594775, 'LANDAREA_MEDI': 0.011576821642152638, 'LIVINGAPARTMENTS_MEDI': 0.003567352062202653, 'LIVINGAREA_MEDI': 0.01717336940792362, 'NONLIVINGAPARTMENTS_MEDI': 0.0006959100650058047, 'NONLIVINGAREA_MEDI': 0.010806117504739667, 'FONDKAPREMONT_MODE': 1.3007664766463638e-05, 'HOUSETYPE_MODE': 9.755748574847729e-06, 'TOTALAREA_MODE': 0.016636803236306993, 'WALLSMATERIAL_MODE': 2.276341334131137e-05, 'EMERGENCYSTATE_MODE': 6.503832383231819e-06, 'OBS_30_CNT_SOCIAL_CIRCLE': 0.00010731323432332502, 'DEF_30_CNT_SOCIAL_CIRCLE': 3.2519161916159095e-05, 'OBS_60_CNT_SOCIAL_CIRCLE': 0.00010731323432332502, 'DEF_60_CNT_SOCIAL_CIRCLE': 2.9267245724543187e-05, 'DAYS_LAST_PHONE_CHANGE': 0.012269479790966827, 'FLAG_DOCUMENT_2': 6.503832383231819e-06, 'FLAG_DOCUMENT_3': 6.503832383231819e-06, 'FLAG_DOCUMENT_4': 6.503832383231819e-06, 'FLAG_DOCUMENT_5': 6.503832383231819e-06, 'FLAG_DOCUMENT_6': 6.503832383231819e-06, 'FLAG_DOCUMENT_7': 6.503832383231819e-06, 'FLAG_DOCUMENT_8': 6.503832383231819e-06, 'FLAG_DOCUMENT_9': 6.503832383231819e-06, 'FLAG_DOCUMENT_10': 6.503832383231819e-06, 'FLAG_DOCUMENT_11': 6.503832383231819e-06, 'FLAG_DOCUMENT_12': 6.503832383231819e-06, 'FLAG_DOCUMENT_13': 6.503832383231819e-06, 'FLAG_DOCUMENT_14': 6.503832383231819e-06, 'FLAG_DOCUMENT_15': 6.503832383231819e-06, 'FLAG_DOCUMENT_16': 6.503832383231819e-06, 'FLAG_DOCUMENT_17': 6.503832383231819e-06, 'FLAG_DOCUMENT_18': 6.503832383231819e-06, 'FLAG_DOCUMENT_19': 6.503832383231819e-06, 'FLAG_DOCUMENT_20': 6.503832383231819e-06, 'FLAG_DOCUMENT_21': 6.503832383231819e-06, 'AMT_REQ_CREDIT_BUREAU_HOUR': 1.6259580958079547e-05, 'AMT_REQ_CREDIT_BUREAU_DAY': 2.9267245724543187e-05, 'AMT_REQ_CREDIT_BUREAU_WEEK': 2.9267245724543187e-05, 'AMT_REQ_CREDIT_BUREAU_MON': 7.804598859878183e-05, 'AMT_REQ_CREDIT_BUREAU_QRT': 3.577107810777501e-05, 'AMT_REQ_CREDIT_BUREAU_YEAR': 8.129790479039775e-05} \n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      " df_columns_missing_values_flag:  \n",
      " {'SK_ID_CURR': False, 'TARGET': False, 'NAME_CONTRACT_TYPE': False, 'CODE_GENDER': False, 'FLAG_OWN_CAR': False, 'FLAG_OWN_REALTY': False, 'CNT_CHILDREN': False, 'AMT_INCOME_TOTAL': False, 'AMT_CREDIT': False, 'AMT_ANNUITY': True, 'AMT_GOODS_PRICE': True, 'NAME_TYPE_SUITE': True, 'NAME_INCOME_TYPE': False, 'NAME_EDUCATION_TYPE': False, 'NAME_FAMILY_STATUS': False, 'NAME_HOUSING_TYPE': False, 'REGION_POPULATION_RELATIVE': False, 'DAYS_BIRTH': False, 'DAYS_EMPLOYED': False, 'DAYS_REGISTRATION': False, 'DAYS_ID_PUBLISH': False, 'OWN_CAR_AGE': True, 'FLAG_MOBIL': False, 'FLAG_EMP_PHONE': False, 'FLAG_WORK_PHONE': False, 'FLAG_CONT_MOBILE': False, 'FLAG_PHONE': False, 'FLAG_EMAIL': False, 'OCCUPATION_TYPE': True, 'CNT_FAM_MEMBERS': True, 'REGION_RATING_CLIENT': False, 'REGION_RATING_CLIENT_W_CITY': False, 'WEEKDAY_APPR_PROCESS_START': False, 'HOUR_APPR_PROCESS_START': False, 'REG_REGION_NOT_LIVE_REGION': False, 'REG_REGION_NOT_WORK_REGION': False, 'LIVE_REGION_NOT_WORK_REGION': False, 'REG_CITY_NOT_LIVE_CITY': False, 'REG_CITY_NOT_WORK_CITY': False, 'LIVE_CITY_NOT_WORK_CITY': False, 'ORGANIZATION_TYPE': False, 'EXT_SOURCE_1': True, 'EXT_SOURCE_2': True, 'EXT_SOURCE_3': True, 'APARTMENTS_AVG': True, 'BASEMENTAREA_AVG': True, 'YEARS_BEGINEXPLUATATION_AVG': True, 'YEARS_BUILD_AVG': True, 'COMMONAREA_AVG': True, 'ELEVATORS_AVG': True, 'ENTRANCES_AVG': True, 'FLOORSMAX_AVG': True, 'FLOORSMIN_AVG': True, 'LANDAREA_AVG': True, 'LIVINGAPARTMENTS_AVG': True, 'LIVINGAREA_AVG': True, 'NONLIVINGAPARTMENTS_AVG': True, 'NONLIVINGAREA_AVG': True, 'APARTMENTS_MODE': True, 'BASEMENTAREA_MODE': True, 'YEARS_BEGINEXPLUATATION_MODE': True, 'YEARS_BUILD_MODE': True, 'COMMONAREA_MODE': True, 'ELEVATORS_MODE': True, 'ENTRANCES_MODE': True, 'FLOORSMAX_MODE': True, 'FLOORSMIN_MODE': True, 'LANDAREA_MODE': True, 'LIVINGAPARTMENTS_MODE': True, 'LIVINGAREA_MODE': True, 'NONLIVINGAPARTMENTS_MODE': True, 'NONLIVINGAREA_MODE': True, 'APARTMENTS_MEDI': True, 'BASEMENTAREA_MEDI': True, 'YEARS_BEGINEXPLUATATION_MEDI': True, 'YEARS_BUILD_MEDI': True, 'COMMONAREA_MEDI': True, 'ELEVATORS_MEDI': True, 'ENTRANCES_MEDI': True, 'FLOORSMAX_MEDI': True, 'FLOORSMIN_MEDI': True, 'LANDAREA_MEDI': True, 'LIVINGAPARTMENTS_MEDI': True, 'LIVINGAREA_MEDI': True, 'NONLIVINGAPARTMENTS_MEDI': True, 'NONLIVINGAREA_MEDI': True, 'FONDKAPREMONT_MODE': True, 'HOUSETYPE_MODE': True, 'TOTALAREA_MODE': True, 'WALLSMATERIAL_MODE': True, 'EMERGENCYSTATE_MODE': True, 'OBS_30_CNT_SOCIAL_CIRCLE': True, 'DEF_30_CNT_SOCIAL_CIRCLE': True, 'OBS_60_CNT_SOCIAL_CIRCLE': True, 'DEF_60_CNT_SOCIAL_CIRCLE': True, 'DAYS_LAST_PHONE_CHANGE': True, 'FLAG_DOCUMENT_2': False, 'FLAG_DOCUMENT_3': False, 'FLAG_DOCUMENT_4': False, 'FLAG_DOCUMENT_5': False, 'FLAG_DOCUMENT_6': False, 'FLAG_DOCUMENT_7': False, 'FLAG_DOCUMENT_8': False, 'FLAG_DOCUMENT_9': False, 'FLAG_DOCUMENT_10': False, 'FLAG_DOCUMENT_11': False, 'FLAG_DOCUMENT_12': False, 'FLAG_DOCUMENT_13': False, 'FLAG_DOCUMENT_14': False, 'FLAG_DOCUMENT_15': False, 'FLAG_DOCUMENT_16': False, 'FLAG_DOCUMENT_17': False, 'FLAG_DOCUMENT_18': False, 'FLAG_DOCUMENT_19': False, 'FLAG_DOCUMENT_20': False, 'FLAG_DOCUMENT_21': False, 'AMT_REQ_CREDIT_BUREAU_HOUR': True, 'AMT_REQ_CREDIT_BUREAU_DAY': True, 'AMT_REQ_CREDIT_BUREAU_WEEK': True, 'AMT_REQ_CREDIT_BUREAU_MON': True, 'AMT_REQ_CREDIT_BUREAU_QRT': True, 'AMT_REQ_CREDIT_BUREAU_YEAR': True} \n",
      "\n",
      "\n",
      " df_columns_missing_values_count:  \n",
      " {'SK_ID_CURR': 0, 'TARGET': 0, 'NAME_CONTRACT_TYPE': 0, 'CODE_GENDER': 0, 'FLAG_OWN_CAR': 0, 'FLAG_OWN_REALTY': 0, 'CNT_CHILDREN': 0, 'AMT_INCOME_TOTAL': 0, 'AMT_CREDIT': 0, 'AMT_ANNUITY': 12, 'AMT_GOODS_PRICE': 278, 'NAME_TYPE_SUITE': 1292, 'NAME_INCOME_TYPE': 0, 'NAME_EDUCATION_TYPE': 0, 'NAME_FAMILY_STATUS': 0, 'NAME_HOUSING_TYPE': 0, 'REGION_POPULATION_RELATIVE': 0, 'DAYS_BIRTH': 0, 'DAYS_EMPLOYED': 0, 'DAYS_REGISTRATION': 0, 'DAYS_ID_PUBLISH': 0, 'OWN_CAR_AGE': 202929, 'FLAG_MOBIL': 0, 'FLAG_EMP_PHONE': 0, 'FLAG_WORK_PHONE': 0, 'FLAG_CONT_MOBILE': 0, 'FLAG_PHONE': 0, 'FLAG_EMAIL': 0, 'OCCUPATION_TYPE': 96391, 'CNT_FAM_MEMBERS': 2, 'REGION_RATING_CLIENT': 0, 'REGION_RATING_CLIENT_W_CITY': 0, 'WEEKDAY_APPR_PROCESS_START': 0, 'HOUR_APPR_PROCESS_START': 0, 'REG_REGION_NOT_LIVE_REGION': 0, 'REG_REGION_NOT_WORK_REGION': 0, 'LIVE_REGION_NOT_WORK_REGION': 0, 'REG_CITY_NOT_LIVE_CITY': 0, 'REG_CITY_NOT_WORK_CITY': 0, 'LIVE_CITY_NOT_WORK_CITY': 0, 'ORGANIZATION_TYPE': 0, 'EXT_SOURCE_1': 173378, 'EXT_SOURCE_2': 660, 'EXT_SOURCE_3': 60965, 'APARTMENTS_AVG': 156061, 'BASEMENTAREA_AVG': 179943, 'YEARS_BEGINEXPLUATATION_AVG': 150007, 'YEARS_BUILD_AVG': 204488, 'COMMONAREA_AVG': 214865, 'ELEVATORS_AVG': 163891, 'ENTRANCES_AVG': 154828, 'FLOORSMAX_AVG': 153020, 'FLOORSMIN_AVG': 208642, 'LANDAREA_AVG': 182590, 'LIVINGAPARTMENTS_AVG': 210199, 'LIVINGAREA_AVG': 154350, 'NONLIVINGAPARTMENTS_AVG': 213514, 'NONLIVINGAREA_AVG': 169682, 'APARTMENTS_MODE': 156061, 'BASEMENTAREA_MODE': 179943, 'YEARS_BEGINEXPLUATATION_MODE': 150007, 'YEARS_BUILD_MODE': 204488, 'COMMONAREA_MODE': 214865, 'ELEVATORS_MODE': 163891, 'ENTRANCES_MODE': 154828, 'FLOORSMAX_MODE': 153020, 'FLOORSMIN_MODE': 208642, 'LANDAREA_MODE': 182590, 'LIVINGAPARTMENTS_MODE': 210199, 'LIVINGAREA_MODE': 154350, 'NONLIVINGAPARTMENTS_MODE': 213514, 'NONLIVINGAREA_MODE': 169682, 'APARTMENTS_MEDI': 156061, 'BASEMENTAREA_MEDI': 179943, 'YEARS_BEGINEXPLUATATION_MEDI': 150007, 'YEARS_BUILD_MEDI': 204488, 'COMMONAREA_MEDI': 214865, 'ELEVATORS_MEDI': 163891, 'ENTRANCES_MEDI': 154828, 'FLOORSMAX_MEDI': 153020, 'FLOORSMIN_MEDI': 208642, 'LANDAREA_MEDI': 182590, 'LIVINGAPARTMENTS_MEDI': 210199, 'LIVINGAREA_MEDI': 154350, 'NONLIVINGAPARTMENTS_MEDI': 213514, 'NONLIVINGAREA_MEDI': 169682, 'FONDKAPREMONT_MODE': 210295, 'HOUSETYPE_MODE': 154297, 'TOTALAREA_MODE': 148431, 'WALLSMATERIAL_MODE': 156341, 'EMERGENCYSTATE_MODE': 145755, 'OBS_30_CNT_SOCIAL_CIRCLE': 1021, 'DEF_30_CNT_SOCIAL_CIRCLE': 1021, 'OBS_60_CNT_SOCIAL_CIRCLE': 1021, 'DEF_60_CNT_SOCIAL_CIRCLE': 1021, 'DAYS_LAST_PHONE_CHANGE': 1, 'FLAG_DOCUMENT_2': 0, 'FLAG_DOCUMENT_3': 0, 'FLAG_DOCUMENT_4': 0, 'FLAG_DOCUMENT_5': 0, 'FLAG_DOCUMENT_6': 0, 'FLAG_DOCUMENT_7': 0, 'FLAG_DOCUMENT_8': 0, 'FLAG_DOCUMENT_9': 0, 'FLAG_DOCUMENT_10': 0, 'FLAG_DOCUMENT_11': 0, 'FLAG_DOCUMENT_12': 0, 'FLAG_DOCUMENT_13': 0, 'FLAG_DOCUMENT_14': 0, 'FLAG_DOCUMENT_15': 0, 'FLAG_DOCUMENT_16': 0, 'FLAG_DOCUMENT_17': 0, 'FLAG_DOCUMENT_18': 0, 'FLAG_DOCUMENT_19': 0, 'FLAG_DOCUMENT_20': 0, 'FLAG_DOCUMENT_21': 0, 'AMT_REQ_CREDIT_BUREAU_HOUR': 41519, 'AMT_REQ_CREDIT_BUREAU_DAY': 41519, 'AMT_REQ_CREDIT_BUREAU_WEEK': 41519, 'AMT_REQ_CREDIT_BUREAU_MON': 41519, 'AMT_REQ_CREDIT_BUREAU_QRT': 41519, 'AMT_REQ_CREDIT_BUREAU_YEAR': 41519} \n",
      "\n",
      "\n",
      " df_columns_missing_values_percentage:  \n",
      " {'SK_ID_CURR': 0.0, 'TARGET': 0.0, 'NAME_CONTRACT_TYPE': 0.0, 'CODE_GENDER': 0.0, 'FLAG_OWN_CAR': 0.0, 'FLAG_OWN_REALTY': 0.0, 'CNT_CHILDREN': 0.0, 'AMT_INCOME_TOTAL': 0.0, 'AMT_CREDIT': 0.0, 'AMT_ANNUITY': 3.9022994299390916e-05, 'AMT_GOODS_PRICE': 0.0009040327012692228, 'NAME_TYPE_SUITE': 0.004201475719567756, 'NAME_INCOME_TYPE': 0.0, 'NAME_EDUCATION_TYPE': 0.0, 'NAME_FAMILY_STATUS': 0.0, 'NAME_HOUSING_TYPE': 0.0, 'REGION_POPULATION_RELATIVE': 0.0, 'DAYS_BIRTH': 0.0, 'DAYS_EMPLOYED': 0.0, 'DAYS_REGISTRATION': 0.0, 'DAYS_ID_PUBLISH': 0.0, 'OWN_CAR_AGE': 0.6599081008484249, 'FLAG_MOBIL': 0.0, 'FLAG_EMP_PHONE': 0.0, 'FLAG_WORK_PHONE': 0.0, 'FLAG_CONT_MOBILE': 0.0, 'FLAG_PHONE': 0.0, 'FLAG_EMAIL': 0.0, 'OCCUPATION_TYPE': 0.31345545362604915, 'CNT_FAM_MEMBERS': 6.503832383231819e-06, 'REGION_RATING_CLIENT': 0.0, 'REGION_RATING_CLIENT_W_CITY': 0.0, 'WEEKDAY_APPR_PROCESS_START': 0.0, 'HOUR_APPR_PROCESS_START': 0.0, 'REG_REGION_NOT_LIVE_REGION': 0.0, 'REG_REGION_NOT_WORK_REGION': 0.0, 'LIVE_REGION_NOT_WORK_REGION': 0.0, 'REG_CITY_NOT_LIVE_CITY': 0.0, 'REG_CITY_NOT_WORK_CITY': 0.0, 'LIVE_CITY_NOT_WORK_CITY': 0.0, 'ORGANIZATION_TYPE': 0.0, 'EXT_SOURCE_1': 0.5638107254699832, 'EXT_SOURCE_2': 0.0021462646864665006, 'EXT_SOURCE_3': 0.19825307062186392, 'APARTMENTS_AVG': 0.5074972927797705, 'BASEMENTAREA_AVG': 0.5851595552679416, 'YEARS_BEGINEXPLUATATION_AVG': 0.48781019215572774, 'YEARS_BUILD_AVG': 0.6649778381911542, 'COMMONAREA_AVG': 0.6987229725115525, 'ELEVATORS_AVG': 0.532959796560123, 'ENTRANCES_AVG': 0.503487680115508, 'FLOORSMAX_AVG': 0.4976082156410665, 'FLOORSMIN_AVG': 0.6784862980511266, 'LANDAREA_AVG': 0.5937673774271489, 'LIVINGAPARTMENTS_AVG': 0.6835495315614726, 'LIVINGAREA_AVG': 0.5019332641759157, 'NONLIVINGAPARTMENTS_AVG': 0.6943296337366793, 'NONLIVINGAREA_AVG': 0.5517916432257708, 'APARTMENTS_MODE': 0.5074972927797705, 'BASEMENTAREA_MODE': 0.5851595552679416, 'YEARS_BEGINEXPLUATATION_MODE': 0.48781019215572774, 'YEARS_BUILD_MODE': 0.6649778381911542, 'COMMONAREA_MODE': 0.6987229725115525, 'ELEVATORS_MODE': 0.532959796560123, 'ENTRANCES_MODE': 0.503487680115508, 'FLOORSMAX_MODE': 0.4976082156410665, 'FLOORSMIN_MODE': 0.6784862980511266, 'LANDAREA_MODE': 0.5937673774271489, 'LIVINGAPARTMENTS_MODE': 0.6835495315614726, 'LIVINGAREA_MODE': 0.5019332641759157, 'NONLIVINGAPARTMENTS_MODE': 0.6943296337366793, 'NONLIVINGAREA_MODE': 0.5517916432257708, 'APARTMENTS_MEDI': 0.5074972927797705, 'BASEMENTAREA_MEDI': 0.5851595552679416, 'YEARS_BEGINEXPLUATATION_MEDI': 0.48781019215572774, 'YEARS_BUILD_MEDI': 0.6649778381911542, 'COMMONAREA_MEDI': 0.6987229725115525, 'ELEVATORS_MEDI': 0.532959796560123, 'ENTRANCES_MEDI': 0.503487680115508, 'FLOORSMAX_MEDI': 0.4976082156410665, 'FLOORSMIN_MEDI': 0.6784862980511266, 'LANDAREA_MEDI': 0.5937673774271489, 'LIVINGAPARTMENTS_MEDI': 0.6835495315614726, 'LIVINGAREA_MEDI': 0.5019332641759157, 'NONLIVINGAPARTMENTS_MEDI': 0.6943296337366793, 'NONLIVINGAREA_MEDI': 0.5517916432257708, 'FONDKAPREMONT_MODE': 0.6838617155158677, 'HOUSETYPE_MODE': 0.50176091261776, 'TOTALAREA_MODE': 0.4826851722377411, 'WALLSMATERIAL_MODE': 0.508407829313423, 'EMERGENCYSTATE_MODE': 0.47398304450897694, 'OBS_30_CNT_SOCIAL_CIRCLE': 0.0033202064316398437, 'DEF_30_CNT_SOCIAL_CIRCLE': 0.0033202064316398437, 'OBS_60_CNT_SOCIAL_CIRCLE': 0.0033202064316398437, 'DEF_60_CNT_SOCIAL_CIRCLE': 0.0033202064316398437, 'DAYS_LAST_PHONE_CHANGE': 3.2519161916159095e-06, 'FLAG_DOCUMENT_2': 0.0, 'FLAG_DOCUMENT_3': 0.0, 'FLAG_DOCUMENT_4': 0.0, 'FLAG_DOCUMENT_5': 0.0, 'FLAG_DOCUMENT_6': 0.0, 'FLAG_DOCUMENT_7': 0.0, 'FLAG_DOCUMENT_8': 0.0, 'FLAG_DOCUMENT_9': 0.0, 'FLAG_DOCUMENT_10': 0.0, 'FLAG_DOCUMENT_11': 0.0, 'FLAG_DOCUMENT_12': 0.0, 'FLAG_DOCUMENT_13': 0.0, 'FLAG_DOCUMENT_14': 0.0, 'FLAG_DOCUMENT_15': 0.0, 'FLAG_DOCUMENT_16': 0.0, 'FLAG_DOCUMENT_17': 0.0, 'FLAG_DOCUMENT_18': 0.0, 'FLAG_DOCUMENT_19': 0.0, 'FLAG_DOCUMENT_20': 0.0, 'FLAG_DOCUMENT_21': 0.0, 'AMT_REQ_CREDIT_BUREAU_HOUR': 0.13501630835970097, 'AMT_REQ_CREDIT_BUREAU_DAY': 0.13501630835970097, 'AMT_REQ_CREDIT_BUREAU_WEEK': 0.13501630835970097, 'AMT_REQ_CREDIT_BUREAU_MON': 0.13501630835970097, 'AMT_REQ_CREDIT_BUREAU_QRT': 0.13501630835970097, 'AMT_REQ_CREDIT_BUREAU_YEAR': 0.13501630835970097} \n",
      "\n",
      "\n",
      " df_target_column_name:  TARGET \n",
      "\n",
      "\n",
      " df_record_id_column_name:  SK_ID_CURR \n",
      "\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " df_record_key_column_name:  SK_ID_CURR \n",
      "\n",
      "SK_ID_CURR dtype:  int64\n",
      "SK_ID_CURR dtype:  int64\n",
      "TARGET dtype:  int64\n",
      "NAME_CONTRACT_TYPE dtype:  object\n",
      "FLAG_OWN_CAR dtype:  object\n",
      "FLAG_OWN_REALTY dtype:  object\n",
      "FLAG_MOBIL dtype:  int64\n",
      "FLAG_EMP_PHONE dtype:  int64\n",
      "FLAG_WORK_PHONE dtype:  int64\n",
      "FLAG_CONT_MOBILE dtype:  int64\n",
      "FLAG_PHONE dtype:  int64\n",
      "FLAG_EMAIL dtype:  int64\n",
      "REG_REGION_NOT_LIVE_REGION dtype:  int64\n",
      "REG_REGION_NOT_WORK_REGION dtype:  int64\n",
      "LIVE_REGION_NOT_WORK_REGION dtype:  int64\n",
      "REG_CITY_NOT_LIVE_CITY dtype:  int64\n",
      "REG_CITY_NOT_WORK_CITY dtype:  int64\n",
      "LIVE_CITY_NOT_WORK_CITY dtype:  int64\n",
      "EMERGENCYSTATE_MODE dtype:  object\n",
      "FLAG_DOCUMENT_2 dtype:  int64\n",
      "FLAG_DOCUMENT_3 dtype:  int64\n",
      "FLAG_DOCUMENT_4 dtype:  int64\n",
      "FLAG_DOCUMENT_5 dtype:  int64\n",
      "FLAG_DOCUMENT_6 dtype:  int64\n",
      "FLAG_DOCUMENT_7 dtype:  int64\n",
      "FLAG_DOCUMENT_8 dtype:  int64\n",
      "FLAG_DOCUMENT_9 dtype:  int64\n",
      "FLAG_DOCUMENT_10 dtype:  int64\n",
      "FLAG_DOCUMENT_11 dtype:  int64\n",
      "FLAG_DOCUMENT_12 dtype:  int64\n",
      "FLAG_DOCUMENT_13 dtype:  int64\n",
      "FLAG_DOCUMENT_14 dtype:  int64\n",
      "FLAG_DOCUMENT_15 dtype:  int64\n",
      "FLAG_DOCUMENT_16 dtype:  int64\n",
      "FLAG_DOCUMENT_17 dtype:  int64\n",
      "FLAG_DOCUMENT_18 dtype:  int64\n",
      "FLAG_DOCUMENT_19 dtype:  int64\n",
      "FLAG_DOCUMENT_20 dtype:  int64\n",
      "FLAG_DOCUMENT_21 dtype:  int64\n",
      "0    282686\n",
      "1     24825\n",
      "Name: TARGET, dtype: int64\n",
      "Cash loans         278232\n",
      "Revolving loans     29279\n",
      "Name: NAME_CONTRACT_TYPE, dtype: int64\n",
      "N    202924\n",
      "Y    104587\n",
      "Name: FLAG_OWN_CAR, dtype: int64\n",
      "Y    213312\n",
      "N     94199\n",
      "Name: FLAG_OWN_REALTY, dtype: int64\n",
      "1    307510\n",
      "0         1\n",
      "Name: FLAG_MOBIL, dtype: int64\n",
      "1    252125\n",
      "0     55386\n",
      "Name: FLAG_EMP_PHONE, dtype: int64\n",
      "0    246203\n",
      "1     61308\n",
      "Name: FLAG_WORK_PHONE, dtype: int64\n",
      "1    306937\n",
      "0       574\n",
      "Name: FLAG_CONT_MOBILE, dtype: int64\n",
      "0    221080\n",
      "1     86431\n",
      "Name: FLAG_PHONE, dtype: int64\n",
      "0    290069\n",
      "1     17442\n",
      "Name: FLAG_EMAIL, dtype: int64\n",
      "0    302854\n",
      "1      4657\n",
      "Name: REG_REGION_NOT_LIVE_REGION, dtype: int64\n",
      "0    291899\n",
      "1     15612\n",
      "Name: REG_REGION_NOT_WORK_REGION, dtype: int64\n",
      "0    295008\n",
      "1     12503\n",
      "Name: LIVE_REGION_NOT_WORK_REGION, dtype: int64\n",
      "0    283472\n",
      "1     24039\n",
      "Name: REG_CITY_NOT_LIVE_CITY, dtype: int64\n",
      "0    236644\n",
      "1     70867\n",
      "Name: REG_CITY_NOT_WORK_CITY, dtype: int64\n",
      "0    252296\n",
      "1     55215\n",
      "Name: LIVE_CITY_NOT_WORK_CITY, dtype: int64\n",
      "No     159428\n",
      "NaN    145755\n",
      "Yes      2328\n",
      "Name: EMERGENCYSTATE_MODE, dtype: int64\n",
      "0    307498\n",
      "1        13\n",
      "Name: FLAG_DOCUMENT_2, dtype: int64\n",
      "1    218340\n",
      "0     89171\n",
      "Name: FLAG_DOCUMENT_3, dtype: int64\n",
      "0    307486\n",
      "1        25\n",
      "Name: FLAG_DOCUMENT_4, dtype: int64\n",
      "0    302863\n",
      "1      4648\n",
      "Name: FLAG_DOCUMENT_5, dtype: int64\n",
      "0    280433\n",
      "1     27078\n",
      "Name: FLAG_DOCUMENT_6, dtype: int64\n",
      "0    307452\n",
      "1        59\n",
      "Name: FLAG_DOCUMENT_7, dtype: int64\n",
      "0    282487\n",
      "1     25024\n",
      "Name: FLAG_DOCUMENT_8, dtype: int64\n",
      "0    306313\n",
      "1      1198\n",
      "Name: FLAG_DOCUMENT_9, dtype: int64\n",
      "0    307504\n",
      "1         7\n",
      "Name: FLAG_DOCUMENT_10, dtype: int64\n",
      "0    306308\n",
      "1      1203\n",
      "Name: FLAG_DOCUMENT_11, dtype: int64\n",
      "0    307509\n",
      "1         2\n",
      "Name: FLAG_DOCUMENT_12, dtype: int64\n",
      "0    306427\n",
      "1      1084\n",
      "Name: FLAG_DOCUMENT_13, dtype: int64\n",
      "0    306608\n",
      "1       903\n",
      "Name: FLAG_DOCUMENT_14, dtype: int64\n",
      "0    307139\n",
      "1       372\n",
      "Name: FLAG_DOCUMENT_15, dtype: int64\n",
      "0    304458\n",
      "1      3053\n",
      "Name: FLAG_DOCUMENT_16, dtype: int64\n",
      "0    307429\n",
      "1        82\n",
      "Name: FLAG_DOCUMENT_17, dtype: int64\n",
      "0    305011\n",
      "1      2500\n",
      "Name: FLAG_DOCUMENT_18, dtype: int64\n",
      "0    307328\n",
      "1       183\n",
      "Name: FLAG_DOCUMENT_19, dtype: int64\n",
      "0    307355\n",
      "1       156\n",
      "Name: FLAG_DOCUMENT_20, dtype: int64\n",
      "0    307408\n",
      "1       103\n",
      "Name: FLAG_DOCUMENT_21, dtype: int64\n",
      "CODE_GENDER dtype:  object\n",
      "REGION_RATING_CLIENT dtype:  int64\n",
      "REGION_RATING_CLIENT_W_CITY dtype:  int64\n",
      "HOUSETYPE_MODE dtype:  object\n",
      "F      202448\n",
      "M      105059\n",
      "XNA         4\n",
      "Name: CODE_GENDER, dtype: int64\n",
      "2    226984\n",
      "3     48330\n",
      "1     32197\n",
      "Name: REGION_RATING_CLIENT, dtype: int64\n",
      "2    229484\n",
      "3     43860\n",
      "1     34167\n",
      "Name: REGION_RATING_CLIENT_W_CITY, dtype: int64\n",
      "NaN                 154297\n",
      "block of flats      150503\n",
      "specific housing      1499\n",
      "terraced house        1212\n",
      "Name: HOUSETYPE_MODE, dtype: int64\n",
      "OWN_CAR_AGE 0.6599081008484249\n",
      "YEARS_BUILD_AVG 0.6649778381911542\n",
      "COMMONAREA_AVG 0.6987229725115525\n",
      "FLOORSMIN_AVG 0.6784862980511266\n",
      "LIVINGAPARTMENTS_AVG 0.6835495315614726\n",
      "NONLIVINGAPARTMENTS_AVG 0.6943296337366793\n",
      "YEARS_BUILD_MODE 0.6649778381911542\n",
      "COMMONAREA_MODE 0.6987229725115525\n",
      "FLOORSMIN_MODE 0.6784862980511266\n",
      "LIVINGAPARTMENTS_MODE 0.6835495315614726\n",
      "NONLIVINGAPARTMENTS_MODE 0.6943296337366793\n",
      "YEARS_BUILD_MEDI 0.6649778381911542\n",
      "COMMONAREA_MEDI 0.6987229725115525\n",
      "FLOORSMIN_MEDI 0.6784862980511266\n",
      "LIVINGAPARTMENTS_MEDI 0.6835495315614726\n",
      "NONLIVINGAPARTMENTS_MEDI 0.6943296337366793\n",
      "FONDKAPREMONT_MODE 0.6838617155158677\n",
      "OWN_CAR_AGE 0.6599081008484249\n",
      "OCCUPATION_TYPE 0.31345545362604915\n",
      "EXT_SOURCE_1 0.5638107254699832\n",
      "APARTMENTS_AVG 0.5074972927797705\n",
      "BASEMENTAREA_AVG 0.5851595552679416\n",
      "YEARS_BEGINEXPLUATATION_AVG 0.48781019215572774\n",
      "YEARS_BUILD_AVG 0.6649778381911542\n",
      "COMMONAREA_AVG 0.6987229725115525\n",
      "ELEVATORS_AVG 0.532959796560123\n",
      "ENTRANCES_AVG 0.503487680115508\n",
      "FLOORSMAX_AVG 0.4976082156410665\n",
      "FLOORSMIN_AVG 0.6784862980511266\n",
      "LANDAREA_AVG 0.5937673774271489\n",
      "LIVINGAPARTMENTS_AVG 0.6835495315614726\n",
      "LIVINGAREA_AVG 0.5019332641759157\n",
      "NONLIVINGAPARTMENTS_AVG 0.6943296337366793\n",
      "NONLIVINGAREA_AVG 0.5517916432257708\n",
      "APARTMENTS_MODE 0.5074972927797705\n",
      "BASEMENTAREA_MODE 0.5851595552679416\n",
      "YEARS_BEGINEXPLUATATION_MODE 0.48781019215572774\n",
      "YEARS_BUILD_MODE 0.6649778381911542\n",
      "COMMONAREA_MODE 0.6987229725115525\n",
      "ELEVATORS_MODE 0.532959796560123\n",
      "ENTRANCES_MODE 0.503487680115508\n",
      "FLOORSMAX_MODE 0.4976082156410665\n",
      "FLOORSMIN_MODE 0.6784862980511266\n",
      "LANDAREA_MODE 0.5937673774271489\n",
      "LIVINGAPARTMENTS_MODE 0.6835495315614726\n",
      "LIVINGAREA_MODE 0.5019332641759157\n",
      "NONLIVINGAPARTMENTS_MODE 0.6943296337366793\n",
      "NONLIVINGAREA_MODE 0.5517916432257708\n",
      "APARTMENTS_MEDI 0.5074972927797705\n",
      "BASEMENTAREA_MEDI 0.5851595552679416\n",
      "YEARS_BEGINEXPLUATATION_MEDI 0.48781019215572774\n",
      "YEARS_BUILD_MEDI 0.6649778381911542\n",
      "COMMONAREA_MEDI 0.6987229725115525\n",
      "ELEVATORS_MEDI 0.532959796560123\n",
      "ENTRANCES_MEDI 0.503487680115508\n",
      "FLOORSMAX_MEDI 0.4976082156410665\n",
      "FLOORSMIN_MEDI 0.6784862980511266\n",
      "LANDAREA_MEDI 0.5937673774271489\n",
      "LIVINGAPARTMENTS_MEDI 0.6835495315614726\n",
      "LIVINGAREA_MEDI 0.5019332641759157\n",
      "NONLIVINGAPARTMENTS_MEDI 0.6943296337366793\n",
      "NONLIVINGAREA_MEDI 0.5517916432257708\n",
      "FONDKAPREMONT_MODE 0.6838617155158677\n",
      "HOUSETYPE_MODE 0.50176091261776\n",
      "TOTALAREA_MODE 0.4826851722377411\n",
      "WALLSMATERIAL_MODE 0.508407829313423\n",
      "EMERGENCYSTATE_MODE 0.47398304450897694\n"
     ]
    }
   ],
   "source": [
    "#%run NB01-Load.ipynb\n",
    "#%run NB02-EDA-MetaData.ipynb\n",
    "%run NB03-EDA-MetaData-Check.ipynb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1    306937\n",
       "0       574\n",
       "Name: FLAG_CONT_MOBILE, dtype: int64"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['FLAG_CONT_MOBILE'].value_counts(dropna=False, sort=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    290069\n",
       "1     17442\n",
       "Name: FLAG_EMAIL, dtype: int64"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['FLAG_EMAIL'].value_counts(dropna=False, sort=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1    252125\n",
       "0     55386\n",
       "Name: FLAG_EMP_PHONE, dtype: int64"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['FLAG_EMP_PHONE'].value_counts(dropna=False, sort=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1    307510\n",
       "0         1\n",
       "Name: FLAG_MOBIL, dtype: int64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['FLAG_MOBIL'].value_counts(dropna=False, sort=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    221080\n",
       "1     86431\n",
       "Name: FLAG_PHONE, dtype: int64"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['FLAG_PHONE'].value_counts(dropna=False, sort=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    246203\n",
       "1     61308\n",
       "Name: FLAG_WORK_PHONE, dtype: int64"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['FLAG_WORK_PHONE'].value_counts(dropna=False, sort=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = df['TARGET']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df.loc[:, ['FLAG_CONT_MOBILE',\n",
    "               'FLAG_EMAIL',\n",
    "               'FLAG_EMP_PHONE',\n",
    "               'FLAG_MOBIL',\n",
    "               'FLAG_PHONE',\n",
    "               'FLAG_WORK_PHONE']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "logreg = LogisticRegression(class_weight='balanced', random_state=seed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Optimization terminated successfully.\n",
      "         Current function value: 0.278765\n",
      "         Iterations 7\n",
      "                           Logit Regression Results                           \n",
      "==============================================================================\n",
      "Dep. Variable:                 TARGET   No. Observations:               307511\n",
      "Model:                          Logit   Df Residuals:                   307505\n",
      "Method:                           MLE   Df Model:                            5\n",
      "Date:                Sat, 16 Jun 2018   Pseudo R-squ.:                0.006349\n",
      "Time:                        16:36:09   Log-Likelihood:                -85723.\n",
      "converged:                       True   LL-Null:                       -86271.\n",
      "                                        LLR p-value:                1.292e-234\n",
      "====================================================================================\n",
      "                       coef    std err          z      P>|z|      [0.025      0.975]\n",
      "------------------------------------------------------------------------------------\n",
      "FLAG_MOBIL          -2.8105      0.155    -18.098      0.000      -3.115      -2.506\n",
      "FLAG_EMP_PHONE       0.4430      0.021     21.473      0.000       0.403       0.483\n",
      "FLAG_WORK_PHONE      0.2484      0.017     14.696      0.000       0.215       0.282\n",
      "FLAG_CONT_MOBILE     0.0221      0.154      0.143      0.886      -0.280       0.324\n",
      "FLAG_PHONE          -0.2692      0.016    -16.610      0.000      -0.301      -0.237\n",
      "FLAG_EMAIL          -0.0533      0.029     -1.836      0.066      -0.110       0.004\n",
      "====================================================================================\n"
     ]
    }
   ],
   "source": [
    "logit_model = sm.Logit(y,X)\n",
    "result = logit_model.fit()\n",
    "print(result.summary())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression(C=1.0, class_weight='balanced', dual=False,\n",
       "          fit_intercept=True, intercept_scaling=1, max_iter=100,\n",
       "          multi_class='ovr', n_jobs=1, penalty='l2', random_state=None,\n",
       "          solver='liblinear', tol=0.0001, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=seed)\n",
    "logreg = LogisticRegression(class_weight='balanced', random_state=seed)\n",
    "logreg.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy of logistic regression classifier on test set: 0.35\n"
     ]
    }
   ],
   "source": [
    "y_pred = logreg.predict(X_test)\n",
    "print('Accuracy of logistic regression classifier on test set: {:.2f}'.format(logreg.score(X_test, y_test)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10-fold cross validation average accuracy: 0.346\n"
     ]
    }
   ],
   "source": [
    "kfold = model_selection.KFold(n_splits=10, random_state=seed)\n",
    "modelCV = LogisticRegression(class_weight='balanced')\n",
    "scoring = 'accuracy'\n",
    "results = model_selection.cross_val_score(modelCV, X_train, y_train, cv=kfold, scoring=scoring)\n",
    "print(\"10-fold cross validation average accuracy: %.3f\" % (results.mean()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[26077 58730]\n",
      " [ 1598  5849]]\n"
     ]
    }
   ],
   "source": [
    "confusion_matrix = confusion_matrix(y_test, y_pred)\n",
    "print(confusion_matrix)\n",
    "# TP, FP\n",
    "# FN, TN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             precision    recall  f1-score   support\n",
      "\n",
      "          0       0.94      0.31      0.46     84807\n",
      "          1       0.09      0.79      0.16      7447\n",
      "\n",
      "avg / total       0.87      0.35      0.44     92254\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(y_test, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nQ40cuZYxhk6dOuHh4cHy5cuxLIsBAwbQqVMn1q9fj2VZzJ8/n5EjRzJ16lSaN2/Od999x6hRo7jr\nrruue90nn3ySOnXqsG7dOlxcXNi6dSseHh6UK1eO7777ji5durB9+3Z8fX2v+YEU4I033mDGjBmM\nHz+e5s2bc/z4cf76669s/2xHjhzh+++/x9nZ+bIRpF69ehEVFcVXX31F2bJlWbx4MR06dGD9+vXU\nqVOHmJgYOnfuTP/+/XnxxRfZunUrQ4YMuer6SUlJvP/++8yaNQt/f39Kly7NnDlzePvtt5kyZQoN\nGjRg27Zt9O7dG1dXVwYMGMCGDRvo378/8+bNo2nTppw+fZrly5dn+Xu7loMHD/Lggw/y9NNPM3fu\nXKKionjhhRdwcnJi3Lhxma/78ssvGThwIL///jubN2/mySefpEGDBnTv3v2a1/377785c+YMYWFh\nlx1PSUlh5MiRVK1albi4OF577TW6d+/OqlWrLnvda6+9xrhx4wgODsbb25slS5bQo0cPJk2aRPPm\nzYmJiaFv374kJydnBpjsXvtSH374IR9++OF1zwP873//u+5I0Nq1a7n//vsvO9auXTvmzZuX5Qjb\nwIED6du3L5UqVeL555+nT58+V7U/79y5M0lJSYSEhDB48GAee+yxy86HhYWRlpbG2rVrad269Q1/\njtykUJVDjick8+Z/trJk+1Hql/dhzON1qOyfzeH7qVNh1Cjo0gWGD4eGDXO3WBEREclRS5cuZcuW\nLURFRWWOPH311VcEBwezbNky2rRpw6RJk+jZsycvvPACAK+//jorVqwgIiLiutfdv38/Q4cOpWrV\nqgAEBwdnnrs4DapkyZL4+fld8/1nz55lwoQJTJw4keeeey7zGvfcc88Nf56dO3fi5eVFRkYG5y80\nx3rllVfw9PQEICoqin//+99ER0dTvnx5AAYMGMDSpUuZNWsW06dPZ8aMGQQFBTFu3Dgsy6JKlSpE\nRETwj3/847J7paenZ4ani9577z1Gjx6d+QG6UqVK/N///R/Tp09nwIABxMTE4OnpSceOHfH29qZC\nhQqXTRG70e/tStOnT6d06dJMnz4dJycnqlWrxqhRo3jxxRd57733KHphplD16tUzG06EhoYyZ84c\nli1bdt1QtX//fizLumqq4cV/DgBBQUHMmDGDatWqERsbS9myZTPPjRgx4rKw8sEHHzBs2DB69eoF\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7caa940>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "logit_roc_auc = roc_auc_score(y_test, logreg.predict(X_test))\n",
    "#logit_roc_auc = roc_auc_score(y_test, logreg.predict_proba(X_test))\n",
    "fpr, tpr, thresholds = roc_curve(y_test, logreg.predict_proba(X_test)[:,1])\n",
    "plt.figure()\n",
    "plt.plot(fpr, tpr, label='Logistic Regression (area = %0.2f)' % logit_roc_auc)\n",
    "plt.plot([0, 1], [0, 1],'r--')\n",
    "plt.xlim([0.0, 1.0])\n",
    "plt.ylim([0.0, 1.05])\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.title('Receiver operating characteristic')\n",
    "plt.legend(loc=\"lower right\")\n",
    "plt.savefig('Log_ROC')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Multicollinearity\n",
    "'FLAG_CONT_MOBILE',\n",
    "'FLAG_EMAIL'\n",
    "'FLAG_EMP_PHONE',\n",
    "'FLAG_MOBIL',\n",
    "'FLAG_PHONE',\n",
    "'FLAG_WORK_PHONE',\n",
    "\n",
    "#1 FLAG_CONT_MOBILE ~ 'FLAG_EMAIL' 'FLAG_EMP_PHONE', 'FLAG_MOBIL', 'FLAG_PHONE', 'FLAG_WORK_PHONE'\n",
    "#2 FLAG_EMAIL ~ 'FLAG_CONT_MOBILE', 'FLAG_EMP_PHONE', 'FLAG_MOBIL', 'FLAG_PHONE', 'FLAG_WORK_PHONE'\n",
    "#3 FLAG_EMP_PHONE ~ 'FLAG_CONT_MOBILE', 'FLAG_EMAIL' 'FLAG_MOBIL', 'FLAG_PHONE', 'FLAG_WORK_PHONE'\n",
    "#4 FLAG_MOBIL ~ 'FLAG_CONT_MOBILE', 'FLAG_EMAIL' 'FLAG_EMP_PHONE', 'FLAG_PHONE', 'FLAG_WORK_PHONE'\n",
    "#5 FLAG_PHONE ~ 'FLAG_CONT_MOBILE', 'FLAG_EMAIL' 'FLAG_EMP_PHONE', 'FLAG_MOBIL', 'FLAG_WORK_PHONE'\n",
    "#6 FLAG_WORK_PHONE ~ 'FLAG_CONT_MOBILE', 'FLAG_EMAIL' 'FLAG_EMP_PHONE', 'FLAG_MOBIL', 'FLAG_WORK_PHONE'\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 1 FLAG_CONT_MOBILE ~ 'FLAG_EMAIL' 'FLAG_EMP_PHONE', 'FLAG_MOBIL', 'FLAG_PHONE', 'FLAG_WORK_PHONE'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = df['FLAG_CONT_MOBILE']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df.loc[:, ['FLAG_EMAIL' 'FLAG_EMP_PHONE', 'FLAG_MOBIL', 'FLAG_PHONE', 'FLAG_WORK_PHONE']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "logreg = LogisticRegression(class_weight='balanced', random_state=seed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "ename": "MissingDataError",
     "evalue": "exog contains inf or nans",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mMissingDataError\u001b[0m                          Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-28-9f7bb26ab541>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mlogit_model\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msm\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mLogit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlogit_model\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msummary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\discrete\\discrete_model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m    416\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    417\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 418\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mBinaryModel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    419\u001b[0m         if (not issubclass(self.__class__, MultinomialModel) and\n\u001b[0;32m    420\u001b[0m                 not np.all((self.endog >= 0) & (self.endog <= 1))):\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\discrete\\discrete_model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m    169\u001b[0m     \"\"\"\n\u001b[0;32m    170\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 171\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mDiscreteModel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    172\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraise_on_perfect_prediction\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    173\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m    210\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    211\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 212\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mLikelihoodModel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    213\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minitialize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    214\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m     62\u001b[0m         \u001b[0mhasconst\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'hasconst'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     63\u001b[0m         self.data = self._handle_data(endog, exog, missing, hasconst,\n\u001b[1;32m---> 64\u001b[1;33m                                       **kwargs)\n\u001b[0m\u001b[0;32m     65\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mk_constant\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mk_constant\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     66\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexog\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexog\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py\u001b[0m in \u001b[0;36m_handle_data\u001b[1;34m(self, endog, exog, missing, hasconst, **kwargs)\u001b[0m\n\u001b[0;32m     85\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     86\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m_handle_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmissing\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhasconst\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 87\u001b[1;33m         \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mhandle_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmissing\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhasconst\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     88\u001b[0m         \u001b[1;31m# kwargs arrays could have changed, easier to just attach here\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     89\u001b[0m         \u001b[1;32mfor\u001b[0m \u001b[0mkey\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\data.py\u001b[0m in \u001b[0;36mhandle_data\u001b[1;34m(endog, exog, missing, hasconst, **kwargs)\u001b[0m\n\u001b[0;32m    631\u001b[0m     \u001b[0mklass\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mhandle_data_class_factory\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    632\u001b[0m     return klass(endog, exog=exog, missing=missing, hasconst=hasconst,\n\u001b[1;32m--> 633\u001b[1;33m                  **kwargs)\n\u001b[0m",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\data.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, missing, hasconst, **kwargs)\u001b[0m\n\u001b[0;32m     77\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     78\u001b[0m         \u001b[1;31m# this has side-effects, attaches k_constant and const_idx\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 79\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_handle_constant\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mhasconst\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     80\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_check_integrity\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     81\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_cache\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mresettable_cache\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\data.py\u001b[0m in \u001b[0;36m_handle_constant\u001b[1;34m(self, hasconst)\u001b[0m\n\u001b[0;32m    131\u001b[0m             \u001b[0mptp_\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexog\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mptp\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    132\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0misfinite\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mptp_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 133\u001b[1;33m                 \u001b[1;32mraise\u001b[0m \u001b[0mMissingDataError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'exog contains inf or nans'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    134\u001b[0m             \u001b[0mconst_idx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwhere\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mptp_\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msqueeze\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    135\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mk_constant\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mconst_idx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msize\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mMissingDataError\u001b[0m: exog contains inf or nans"
     ]
    }
   ],
   "source": [
    "logit_model = sm.Logit(y,X)\n",
    "result = logit_model.fit()\n",
    "print(result.summary())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 2 FLAG_EMAIL ~ 'FLAG_CONT_MOBILE', 'FLAG_EMP_PHONE', 'FLAG_MOBIL', 'FLAG_PHONE', 'FLAG_WORK_PHONE'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = df['FLAG_EMAIL']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df.loc[:, ['FLAG_CONT_MOBILE', 'FLAG_EMP_PHONE', 'FLAG_MOBIL', 'FLAG_PHONE', 'FLAG_WORK_PHONE']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "logreg = LogisticRegression(class_weight='balanced', random_state=seed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Optimization terminated successfully.\n",
      "         Current function value: 0.214854\n",
      "         Iterations 8\n",
      "                           Logit Regression Results                           \n",
      "==============================================================================\n",
      "Dep. Variable:             FLAG_EMAIL   No. Observations:               307511\n",
      "Model:                          Logit   Df Residuals:                   307506\n",
      "Method:                           MLE   Df Model:                            4\n",
      "Date:                Sat, 16 Jun 2018   Pseudo R-squ.:                 0.01373\n",
      "Time:                        16:55:03   Log-Likelihood:                -66070.\n",
      "converged:                       True   LL-Null:                       -66990.\n",
      "                                        LLR p-value:                     0.000\n",
      "====================================================================================\n",
      "                       coef    std err          z      P>|z|      [0.025      0.975]\n",
      "------------------------------------------------------------------------------------\n",
      "FLAG_CONT_MOBILE    -0.3118      0.149     -2.098      0.036      -0.603      -0.021\n",
      "FLAG_EMP_PHONE       1.0289      0.028     36.265      0.000       0.973       1.084\n",
      "FLAG_MOBIL          -3.3985      0.151    -22.508      0.000      -3.694      -3.103\n",
      "FLAG_PHONE           0.2528      0.018     14.167      0.000       0.218       0.288\n",
      "FLAG_WORK_PHONE     -0.3792      0.022    -17.622      0.000      -0.421      -0.337\n",
      "====================================================================================\n"
     ]
    }
   ],
   "source": [
    "logit_model = sm.Logit(y,X)\n",
    "result = logit_model.fit()\n",
    "print(result.summary())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 3 FLAG_EMP_PHONE ~ 'FLAG_CONT_MOBILE', 'FLAG_EMAIL' 'FLAG_MOBIL', 'FLAG_PHONE', 'FLAG_WORK_PHONE'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = df['FLAG_EMP_PHONE']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df.loc[:, ['FLAG_CONT_MOBILE', 'FLAG_EMAIL' 'FLAG_MOBIL', 'FLAG_PHONE', 'FLAG_WORK_PHONE']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "logreg = LogisticRegression(class_weight='balanced', random_state=seed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "ename": "MissingDataError",
     "evalue": "exog contains inf or nans",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mMissingDataError\u001b[0m                          Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-36-9f7bb26ab541>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mlogit_model\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msm\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mLogit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlogit_model\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msummary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\discrete\\discrete_model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m    416\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    417\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 418\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mBinaryModel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    419\u001b[0m         if (not issubclass(self.__class__, MultinomialModel) and\n\u001b[0;32m    420\u001b[0m                 not np.all((self.endog >= 0) & (self.endog <= 1))):\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\discrete\\discrete_model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m    169\u001b[0m     \"\"\"\n\u001b[0;32m    170\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 171\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mDiscreteModel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    172\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraise_on_perfect_prediction\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    173\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m    210\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    211\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 212\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mLikelihoodModel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    213\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minitialize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    214\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m     62\u001b[0m         \u001b[0mhasconst\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'hasconst'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     63\u001b[0m         self.data = self._handle_data(endog, exog, missing, hasconst,\n\u001b[1;32m---> 64\u001b[1;33m                                       **kwargs)\n\u001b[0m\u001b[0;32m     65\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mk_constant\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mk_constant\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     66\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexog\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexog\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py\u001b[0m in \u001b[0;36m_handle_data\u001b[1;34m(self, endog, exog, missing, hasconst, **kwargs)\u001b[0m\n\u001b[0;32m     85\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     86\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m_handle_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmissing\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhasconst\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 87\u001b[1;33m         \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mhandle_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmissing\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhasconst\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     88\u001b[0m         \u001b[1;31m# kwargs arrays could have changed, easier to just attach here\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     89\u001b[0m         \u001b[1;32mfor\u001b[0m \u001b[0mkey\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\data.py\u001b[0m in \u001b[0;36mhandle_data\u001b[1;34m(endog, exog, missing, hasconst, **kwargs)\u001b[0m\n\u001b[0;32m    631\u001b[0m     \u001b[0mklass\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mhandle_data_class_factory\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    632\u001b[0m     return klass(endog, exog=exog, missing=missing, hasconst=hasconst,\n\u001b[1;32m--> 633\u001b[1;33m                  **kwargs)\n\u001b[0m",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\data.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, missing, hasconst, **kwargs)\u001b[0m\n\u001b[0;32m     77\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     78\u001b[0m         \u001b[1;31m# this has side-effects, attaches k_constant and const_idx\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 79\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_handle_constant\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mhasconst\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     80\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_check_integrity\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     81\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_cache\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mresettable_cache\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\data.py\u001b[0m in \u001b[0;36m_handle_constant\u001b[1;34m(self, hasconst)\u001b[0m\n\u001b[0;32m    131\u001b[0m             \u001b[0mptp_\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexog\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mptp\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    132\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0misfinite\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mptp_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 133\u001b[1;33m                 \u001b[1;32mraise\u001b[0m \u001b[0mMissingDataError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'exog contains inf or nans'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    134\u001b[0m             \u001b[0mconst_idx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwhere\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mptp_\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msqueeze\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    135\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mk_constant\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mconst_idx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msize\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mMissingDataError\u001b[0m: exog contains inf or nans"
     ]
    }
   ],
   "source": [
    "logit_model = sm.Logit(y,X)\n",
    "result = logit_model.fit()\n",
    "print(result.summary())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 4 FLAG_MOBIL ~ 'FLAG_CONT_MOBILE', 'FLAG_EMAIL' 'FLAG_EMP_PHONE', 'FLAG_PHONE', 'FLAG_WORK_PHONE'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = df['FLAG_MOBIL']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df.loc[:, ['FLAG_CONT_MOBILE', 'FLAG_EMAIL' 'FLAG_EMP_PHONE', 'FLAG_PHONE', 'FLAG_WORK_PHONE']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "logreg = LogisticRegression(class_weight='balanced', random_state=seed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "ename": "MissingDataError",
     "evalue": "exog contains inf or nans",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mMissingDataError\u001b[0m                          Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-40-9f7bb26ab541>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mlogit_model\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msm\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mLogit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlogit_model\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msummary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\discrete\\discrete_model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m    416\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    417\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 418\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mBinaryModel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    419\u001b[0m         if (not issubclass(self.__class__, MultinomialModel) and\n\u001b[0;32m    420\u001b[0m                 not np.all((self.endog >= 0) & (self.endog <= 1))):\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\discrete\\discrete_model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m    169\u001b[0m     \"\"\"\n\u001b[0;32m    170\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 171\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mDiscreteModel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    172\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraise_on_perfect_prediction\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    173\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m    210\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    211\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 212\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mLikelihoodModel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    213\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minitialize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    214\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m     62\u001b[0m         \u001b[0mhasconst\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'hasconst'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     63\u001b[0m         self.data = self._handle_data(endog, exog, missing, hasconst,\n\u001b[1;32m---> 64\u001b[1;33m                                       **kwargs)\n\u001b[0m\u001b[0;32m     65\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mk_constant\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mk_constant\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     66\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexog\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexog\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py\u001b[0m in \u001b[0;36m_handle_data\u001b[1;34m(self, endog, exog, missing, hasconst, **kwargs)\u001b[0m\n\u001b[0;32m     85\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     86\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m_handle_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmissing\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhasconst\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 87\u001b[1;33m         \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mhandle_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmissing\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhasconst\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     88\u001b[0m         \u001b[1;31m# kwargs arrays could have changed, easier to just attach here\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     89\u001b[0m         \u001b[1;32mfor\u001b[0m \u001b[0mkey\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\data.py\u001b[0m in \u001b[0;36mhandle_data\u001b[1;34m(endog, exog, missing, hasconst, **kwargs)\u001b[0m\n\u001b[0;32m    631\u001b[0m     \u001b[0mklass\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mhandle_data_class_factory\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    632\u001b[0m     return klass(endog, exog=exog, missing=missing, hasconst=hasconst,\n\u001b[1;32m--> 633\u001b[1;33m                  **kwargs)\n\u001b[0m",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\data.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, missing, hasconst, **kwargs)\u001b[0m\n\u001b[0;32m     77\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     78\u001b[0m         \u001b[1;31m# this has side-effects, attaches k_constant and const_idx\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 79\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_handle_constant\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mhasconst\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     80\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_check_integrity\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     81\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_cache\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mresettable_cache\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\data.py\u001b[0m in \u001b[0;36m_handle_constant\u001b[1;34m(self, hasconst)\u001b[0m\n\u001b[0;32m    131\u001b[0m             \u001b[0mptp_\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexog\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mptp\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    132\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0misfinite\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mptp_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 133\u001b[1;33m                 \u001b[1;32mraise\u001b[0m \u001b[0mMissingDataError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'exog contains inf or nans'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    134\u001b[0m             \u001b[0mconst_idx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwhere\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mptp_\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msqueeze\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    135\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mk_constant\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mconst_idx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msize\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mMissingDataError\u001b[0m: exog contains inf or nans"
     ]
    }
   ],
   "source": [
    "logit_model = sm.Logit(y,X)\n",
    "result = logit_model.fit()\n",
    "print(result.summary())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 5 FLAG_PHONE ~ 'FLAG_CONT_MOBILE', 'FLAG_EMAIL' 'FLAG_EMP_PHONE', 'FLAG_MOBIL', 'FLAG_WORK_PHONE'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = df['FLAG_PHONE']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df.loc[:, ['FLAG_CONT_MOBILE', 'FLAG_EMAIL' 'FLAG_EMP_PHONE', 'FLAG_MOBIL', 'FLAG_WORK_PHONE']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "logreg = LogisticRegression(class_weight='balanced', random_state=seed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "ename": "MissingDataError",
     "evalue": "exog contains inf or nans",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mMissingDataError\u001b[0m                          Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-44-9f7bb26ab541>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mlogit_model\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msm\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mLogit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlogit_model\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msummary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\discrete\\discrete_model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m    416\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    417\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 418\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mBinaryModel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    419\u001b[0m         if (not issubclass(self.__class__, MultinomialModel) and\n\u001b[0;32m    420\u001b[0m                 not np.all((self.endog >= 0) & (self.endog <= 1))):\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\discrete\\discrete_model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m    169\u001b[0m     \"\"\"\n\u001b[0;32m    170\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 171\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mDiscreteModel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    172\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraise_on_perfect_prediction\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    173\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m    210\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    211\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 212\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mLikelihoodModel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    213\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minitialize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    214\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m     62\u001b[0m         \u001b[0mhasconst\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'hasconst'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     63\u001b[0m         self.data = self._handle_data(endog, exog, missing, hasconst,\n\u001b[1;32m---> 64\u001b[1;33m                                       **kwargs)\n\u001b[0m\u001b[0;32m     65\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mk_constant\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mk_constant\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     66\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexog\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexog\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py\u001b[0m in \u001b[0;36m_handle_data\u001b[1;34m(self, endog, exog, missing, hasconst, **kwargs)\u001b[0m\n\u001b[0;32m     85\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     86\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m_handle_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmissing\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhasconst\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 87\u001b[1;33m         \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mhandle_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmissing\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhasconst\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     88\u001b[0m         \u001b[1;31m# kwargs arrays could have changed, easier to just attach here\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     89\u001b[0m         \u001b[1;32mfor\u001b[0m \u001b[0mkey\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\data.py\u001b[0m in \u001b[0;36mhandle_data\u001b[1;34m(endog, exog, missing, hasconst, **kwargs)\u001b[0m\n\u001b[0;32m    631\u001b[0m     \u001b[0mklass\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mhandle_data_class_factory\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    632\u001b[0m     return klass(endog, exog=exog, missing=missing, hasconst=hasconst,\n\u001b[1;32m--> 633\u001b[1;33m                  **kwargs)\n\u001b[0m",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\data.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, missing, hasconst, **kwargs)\u001b[0m\n\u001b[0;32m     77\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     78\u001b[0m         \u001b[1;31m# this has side-effects, attaches k_constant and const_idx\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 79\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_handle_constant\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mhasconst\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     80\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_check_integrity\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     81\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_cache\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mresettable_cache\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\data.py\u001b[0m in \u001b[0;36m_handle_constant\u001b[1;34m(self, hasconst)\u001b[0m\n\u001b[0;32m    131\u001b[0m             \u001b[0mptp_\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexog\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mptp\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    132\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0misfinite\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mptp_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 133\u001b[1;33m                 \u001b[1;32mraise\u001b[0m \u001b[0mMissingDataError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'exog contains inf or nans'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    134\u001b[0m             \u001b[0mconst_idx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwhere\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mptp_\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msqueeze\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    135\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mk_constant\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mconst_idx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msize\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mMissingDataError\u001b[0m: exog contains inf or nans"
     ]
    }
   ],
   "source": [
    "logit_model = sm.Logit(y,X)\n",
    "result = logit_model.fit()\n",
    "print(result.summary())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 6 FLAG_WORK_PHONE ~ 'FLAG_CONT_MOBILE', 'FLAG_EMAIL' 'FLAG_EMP_PHONE', 'FLAG_MOBIL', 'FLAG_WORK_PHONE'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = df['FLAG_WORK_PHONE']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df.loc[:, ['FLAG_CONT_MOBILE', 'FLAG_EMAIL' 'FLAG_EMP_PHONE', 'FLAG_MOBIL', 'FLAG_WORK_PHONE']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "logreg = LogisticRegression(class_weight='balanced', random_state=seed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "ename": "MissingDataError",
     "evalue": "exog contains inf or nans",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mMissingDataError\u001b[0m                          Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-48-9f7bb26ab541>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mlogit_model\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msm\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mLogit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlogit_model\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msummary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\discrete\\discrete_model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m    416\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    417\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 418\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mBinaryModel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    419\u001b[0m         if (not issubclass(self.__class__, MultinomialModel) and\n\u001b[0;32m    420\u001b[0m                 not np.all((self.endog >= 0) & (self.endog <= 1))):\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\discrete\\discrete_model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m    169\u001b[0m     \"\"\"\n\u001b[0;32m    170\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 171\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mDiscreteModel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    172\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraise_on_perfect_prediction\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    173\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m    210\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    211\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 212\u001b[1;33m         \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mLikelihoodModel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    213\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minitialize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    214\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, **kwargs)\u001b[0m\n\u001b[0;32m     62\u001b[0m         \u001b[0mhasconst\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'hasconst'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     63\u001b[0m         self.data = self._handle_data(endog, exog, missing, hasconst,\n\u001b[1;32m---> 64\u001b[1;33m                                       **kwargs)\n\u001b[0m\u001b[0;32m     65\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mk_constant\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mk_constant\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     66\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexog\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexog\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py\u001b[0m in \u001b[0;36m_handle_data\u001b[1;34m(self, endog, exog, missing, hasconst, **kwargs)\u001b[0m\n\u001b[0;32m     85\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     86\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m_handle_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmissing\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhasconst\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 87\u001b[1;33m         \u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mhandle_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmissing\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhasconst\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     88\u001b[0m         \u001b[1;31m# kwargs arrays could have changed, easier to just attach here\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     89\u001b[0m         \u001b[1;32mfor\u001b[0m \u001b[0mkey\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\data.py\u001b[0m in \u001b[0;36mhandle_data\u001b[1;34m(endog, exog, missing, hasconst, **kwargs)\u001b[0m\n\u001b[0;32m    631\u001b[0m     \u001b[0mklass\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mhandle_data_class_factory\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mendog\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexog\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    632\u001b[0m     return klass(endog, exog=exog, missing=missing, hasconst=hasconst,\n\u001b[1;32m--> 633\u001b[1;33m                  **kwargs)\n\u001b[0m",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\data.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, endog, exog, missing, hasconst, **kwargs)\u001b[0m\n\u001b[0;32m     77\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     78\u001b[0m         \u001b[1;31m# this has side-effects, attaches k_constant and const_idx\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 79\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_handle_constant\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mhasconst\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     80\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_check_integrity\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     81\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_cache\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mresettable_cache\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\data.py\u001b[0m in \u001b[0;36m_handle_constant\u001b[1;34m(self, hasconst)\u001b[0m\n\u001b[0;32m    131\u001b[0m             \u001b[0mptp_\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexog\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mptp\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    132\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0misfinite\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mptp_\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 133\u001b[1;33m                 \u001b[1;32mraise\u001b[0m \u001b[0mMissingDataError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'exog contains inf or nans'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    134\u001b[0m             \u001b[0mconst_idx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwhere\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mptp_\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msqueeze\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    135\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mk_constant\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mconst_idx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msize\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mMissingDataError\u001b[0m: exog contains inf or nans"
     ]
    }
   ],
   "source": [
    "logit_model = sm.Logit(y,X)\n",
    "result = logit_model.fit()\n",
    "print(result.summary())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
